package com.service;

import com.dto.NoteCreateDTO;
import com.dto.NoteWithUserDTO;
import com.pojo.Notes;
import com.pojo.Result;
import com.vo.NoteWithStatsVO;

import java.util.List;


public interface NotesService {
     Result<Void> createNoteWithTags(NoteCreateDTO dto);
    Result<Void> updateNote(Notes note);
    Result<Void> deleteNote(Integer id);
    Result<NoteWithUserDTO> getNoteById(Integer id);

    Result<Void> updateNotePrivacy(Integer id, Boolean isPrivate);
    Integer getAuthorIdByNoteId(Integer noteId);
    List<NoteWithStatsVO> getPublicNotesByTagWithStats(Integer tagId, int limit, Integer currentUserId);

    Result<List<NoteWithStatsVO>> getRecentPublicNotesWithStats(Integer userId, int limit);
    List<NoteWithStatsVO> getLikedNotesWithStats(Integer userId);
    List<NoteWithStatsVO> getCollectedNotesWithStats(Integer userId);
    List<NoteWithStatsVO> getUserNotesWithStats(Integer userId, Integer currentUserId);
}
